####################################################################################################
### Title: People Consistently View Elections and Civil Liberties as Key Components of Democracy ###
### Content: Cleaning the Egyptian dataset                                                       ###
### Date: August 24, 2024                                                                        ###
####################################################################################################

### Set-up ----
## Clean the working environment and set the working directory
rm(list = ls())
setwd("~/Desktop/Science_Replication/data_cleaning")

## Install the cjdata package (if not yet installed)
# library(devtools)  # version 2.4.3
# install_github(repo = "yhoriuchi/cjdata")

## Load the required packages
library(tidyverse) # version 2.0.0
library(cjdata)    # version 0.1.0

## Read the raw dataset
df <- read_Qualtrics("raw_EG.csv")

### Data cleaning ----
## Recode variables of respondent characteristics
# Minority status (1 = minority; 0 = otherwise)
df <- df %>% mutate(minority_bin = case_when(
  minority == "نعم\n" ~ 1,
  minority == "لا\n" | minority == "لست متأكدًا\n" ~ 0
))
df$minority_bin <- factor(df$minority_bin, 0:1, c("Non-Minority", "Minority"))
table(df$minority_bin)

# Gender (1 = female; 0 = male)
df <- df %>% rename(gender5 = gender)
df <- df %>% mutate(gender_bin = case_when(
  gender5 == "أنثى" ~ 1,
  gender5 == "ذكر" ~ 0
))
df$gender_bin <- factor(df$gender_bin, 0:1, c("Male", "Female"))
table(df$gender_bin)

# Self-reported political ideology (1 = right; 0 = left)
df <- df %>% mutate(ideo_bin = case_when(
  political == "يساري تماما" |
    political == "يساري إلى حد ما" |
    political == "معتدل تماما" ~ 0,
  political == "يميني تماما" |
    political == "يميني معتدل" |
    political == "يميني إلى حد ما" ~ 1
))
df$ideo_bin <- factor(df$ideo_bin, 0:1, c("Left", "Right"))
table(df$ideo_bin)

# Education (1 = college; 0 = no college)
df <- df %>% mutate(edu_bin = case_when(
  edu == "أقل من الثانوية" |
    edu == "ما يعادل المدرسة الثانوية" |
    edu == "درجة دبلوم جامعي" |
    edu == "كلية ما، لا يوجد درجة بعد الكلية" ~ 0,
  edu == "درجة البكالوريوس / درجة أربع سنوات (بكالوريوس تجارة، بكالوريوس علوم، بكالوريوس إدارة أعمال)" |
    edu == "درجة متقدمة (ماجستير، ماجستير في الآداب، ماجستير في العلوم، ماجستير في إدارة الأعمال، دكتوراه، دكتوراه في القانون، دكتوراه في الطب، وما إلى ذلك.)" ~ 1
))
df$edu_bin <- factor(df$edu_bin, 0:1, c("No College", "College"))
table(df$edu_bin)

# Geopolitical alignment (1 = pro-China; 0 = pro-US)
df <- df %>% mutate(pro_china = case_when(
  china_us1 == "أفضل الولايات المتحدة إلى حدٍ ما" |
    china_us1 == "أفضل الولايات المتحدة بالتأكيد" ~ 0,
  china_us1 == "أفضل الصين إلى حدٍ ما" |
    china_us1 == "أفضل الصين بالتأكيد" ~ 1
))
df$pro_china <- factor(df$pro_china, 0:1 , c("Pro-US", "Pro-China"))
table(df$pro_china)

## Subset and reshape dataset into wide format that each row is a distinct conjoint task
df$Q1.1 <- ifelse(df$Q1.1 == "البلد أ", "Country A", "Country B")
df$Q1.5 <- ifelse(df$Q1.5 == "البلد أ", "Country A", "Country B")
df$Q1.9 <- ifelse(df$Q1.9 == "البلد أ", "Country A", "Country B")
df_cj <- cjdata::reshape_conjoint(df, ResponseId, paste0("Q1.", seq(from = 1, to = 9, by = 4)))

## Rename the variables
df_cj <- df_cj %>% 
  rename(econ = "الأوضاع الاقتصادية للأغنياء والفقراء ...",
         populist = "عند وضع السياسات والسياسيين ...",
         direct = "الشعب يصوت مباشرة على القرارات السياسية ...",
         civil = "الحريات الفردية للمواطنين، مثل حرية التعبير والدين والتجمع ...",
         gender = "حقوق الرجل والمرأة ...",
         expert = "الخبراء المستقلون غير المنتخبين لديهم ...",
         obedient = "عندما يكره المواطنون سياسات حكومتهم ...",
         election = "انتخابات القيادة السياسية في هذا البلد ...",
         leader = "عند اتخاذ القرارات، فإن زعيم البلاد ...")

## Reorder the factors
# Electoral democracy
df_cj$election <- 
  factor(df_cj$election, 
         levels = c("لا تُقام هذه الانتخابات أو غير موجودة", "منحازة لصالح المجموعة السياسية التي تتولى السلطة حاليا", "يتم التنافس عليها بحرية ونزاهة من مجموعات سياسية مختلفة"), 
         labels = c("Elections are not held", "Elections are biased", "Elections are free and fair"))

# Liberal democracy
df_cj$civil <- 
  factor(df_cj$civil, 
         levels = c("غير محمية على الإطلاق بموجب القانون", "تتوفر لها حماية ضعيفة بموجب القانون", "محمية بقوة بموجب القانون"),
         labels = c("Civil liberties are not at all protected", "Civil liberties are weakly protected", "Civil liberties are strongly protected"))

# Institutional democracy
df_cj$leader <- 
  factor(df_cj$leader, 
         levels = c("يتعدى دائماً على السلطة التشريعية وسلطة المحاكم", "يتعدى أحياناً على السلطة التشريعية وسلطة المحاكم", "يحترم السلطة التشريعية وسلطة المحاكم"), 
         labels = c("Leader is weakly constrained", "Leader is somewhat constrained", "Leader is highly constrained"))

# Populist democracy
df_cj$populist <- 
  factor(df_cj$populist, 
         levels = c("نادرًا ما يُتبع ما يريده الأغلبية", "يُتبع أحيانا ما تريده الأغلبية", "يُتبع بشكل متكرر ما يريده الأغلبية"), 
         labels = c("Leader rarely follows the majority", "Leader sometimes follows the majority", "Leader frequently follows the majority"))

# Loyalist democracy
df_cj$obedient <- 
  factor(df_cj$obedient,  
         levels = c("ينفذون تعليمات الحكومة في الغالب", "البعض ينفذ تعليمات الحكومة والبعض يتحدى الحكومة", "الغالبية تتحدى الحكومة"),
         labels = c("Dissidents mostly obey the gov't", "Dissidents occasionally obey the gov't", "Dissidents mostly challenge the gov't"))

## Substantive democracy (economy)
df_cj$econ <- 
  factor(df_cj$econ, 
         levels = c("غير متكافئة للغاية", "غير متكافئة إلى حدٍ ما", "متكافئة"), 
         labels = c("Economic equality is very low", "Economic equality is somewhat low", "Economic equality is high"))

# Substantive democracy (gender)
df_cj$gender <- 
  factor(df_cj$gender, 
         levels = c("غير متكافئة للغاية", "غير متكافئة إلى حدٍ ما", "متكافئة"), 
         labels = c("Gender equality is very low", "Gender equality is somewhat low", "Gender equality is high"))

# Technocratic democracy
df_cj$expert <- 
  factor(df_cj$expert, 
         levels = c("ليس لهم تأثير على السياسة", "بعض التأثير على السياسة", "تأثير كبير على السياسة"), 
         labels = c("Experts have small influence on policy", "Experts have some influence on policy", "Experts have much influence on policy"))

# Direct democracy
df_cj$direct <- 
  factor(df_cj$direct, 
         levels = c("نادراً", "أحياناً", "كثيراً"),
         labels = c("Policies are rarely voted on", "Policies are sometimes voted on", "Policies are frequently voted on"))

## Incorporate respondent IDs and other covariates
df <- df %>% rename(id = ResponseId)
df_cj <- merge(df_cj, df, by = "id")

## Indicate the country
df_cj$country <- "EG"

## Export the dataset
write.csv(df_cj, "df_EG.csv", row.names = FALSE)
